package com.showmaker.mapper;

import com.showmaker.bean.Order;
import org.apache.ibatis.annotations.Param;
import org.aspectj.weaver.ast.Or;

import java.util.List;
import java.util.Map;

public interface OrderMapper {
    /**
     * 通过条件查询所有符合条件的 Order 对象
     * @param map 封装查询条件
     * @return 将所有符合条件的 Order 对象返回
     */
    public List<Order> selectOrderByMap(Map<String, Object> map);

    /**
     * 添加预约信息
     * @param order 要添加的预约信息
     */
    public void insertOrder(Order order);

    /**
     * 通过预约的id
     * @param id t_order 表中某一条数据的id值
     * @return 返回该条数据的详细信息
     */
    public Map<String, Object> selectOrderDetailById(Integer id);

    /**
     * 获取今日预约数
     * @param date 当前日期
     * @return 返回今日预约数
     */
    public int getTodayOrderNumber(String date);

    /**
     * 获取今日到诊数
     * @param date 当前日期
     * @return 返回今日到诊数
     */
    public int getTodayVisitsNumber(String date);

    /**
     * 获取本周预约数
     * @param firstDayOfWeek 本周的第一天
     * @param lastDayOfWeek 本周的最后一天
     * @return 返回本周预约数
     */
    public int getThisWeekOrderNumber(@Param("firstDayOfWeek") String firstDayOfWeek, @Param("lastDayOfWeek") String lastDayOfWeek);

    /**
     * 获取本周到诊数
     * @param firstDayOfWeek 本周的第一天
     * @param lastDayOfWeek 本周的最后一天
     * @return 返回本周到诊数
     */
    public int getThisWeekVisitsNumber(@Param("firstDayOfWeek") String firstDayOfWeek, @Param("lastDayOfWeek") String lastDayOfWeek);

    /**
     * 获取本月预约数
     * @param firstDayOfMonth 本月的第一天
     * @param lastDayOfMonth 本月的最后一天
     * @return 返回本月预约数
     */
    public int getThisMonthOrderNumber(@Param("firstDayOfMonth") String firstDayOfMonth, @Param("lastDayOfMonth") String lastDayOfMonth);

    /**
     * 获取本周到诊数
     * @param firstDayOfMonth 本月的第一天
     * @param lastDayOfMonth 本月的最后一天
     * @return 返回本月到诊数
     */
    public int getThisMonthVisitsNumber(@Param("firstDayOfMonth") String firstDayOfMonth, @Param("lastDayOfMonth") String lastDayOfMonth);
}
